package net.starwifi.duobao.mvc;


import net.starwifi.duobao.utils.SpringUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * Utils-页面消息返回Entity类.
 *
 * @author <a href="http://ruo.whosenet.com">ruo.whosenet.com</>
 * @version 1.0
 */
public class Message {




    /**
     * 类型
     */
    public enum Type {

        /** 成功 */
        success,

        /** 警告 */
        warn,

        /** 错误 */
        error,

        /** 超时*/
        timeout
    }

    /** 类型 */
    private Type type;

    /** 内容 */
    private String content;

    /**
     * 初始化一个新创建的 Message 对象，使其表示一个空消息。
     */
    public Message() {

    }

    /**
     * 初始化一个新创建的 Message 对象
     *
     * @param type
     *            类型
     * @param content
     *            内容
     */
    public Message(Type type, String content) {
        this.type = type;
        this.content = content;
    }

    /**
     * @param type
     *            类型
     * @param content
     *            内容
     * @param args
     *            参数
     */
    public Message(Type type, String content, Object... args) {
        this.type = type;
        this.content = SpringUtils.getMessage(content, args);
    }

    /**
     * 返回成功消息
     *
     * @param content
     *            内容
     * @param args
     *            参数
     * @return 成功消息
     */
    public static Message success(String content, Object... args) {
        return new Message(Type.success, content, args);
    }

    /**
     * 返回警告消息
     *
     * @param content
     *            内容
     * @param args
     *            参数
     * @return 警告消息
     */
    public static Message warn(String content, Object... args) {
        return new Message(Type.warn, content, args);
    }

    /**
     * 返回错误消息
     *
     * @param content
     *            内容
     * @param args
     *            参数
     * @return 错误消息
     */
    public static Message error(String content, Object... args) {
        return new Message(Type.error, content, args);
    }

    /**
     * 返回错误消息
     *
     * @param content
     *            内容
     * @param args
     *            参数
     * @return 错误消息
     */
    public static Message timeout(String content, Object... args) {
        return new Message(Type.timeout, content, args);
    }



    public static Map<String,Object> createMessage(Message message,Map<String,Object> params){
        Map<String,Object> result=new HashMap<String, Object>();
        result.put("type",message.getType());
        result.put("content",message.getContent());
        for(String name : params.keySet()){
            result.put(name,params.get(name));
        }
        return result;
    }

    /**
     * 获取类型
     *
     * @return 类型
     */
    public Type getType() {
        return type;
    }

    /**
     * 设置类型
     *
     * @param type
     *            类型
     */
    public void setType(Type type) {
        this.type = type;
    }

    /**
     * 获取内容
     *
     * @return 内容
     */
    public String getContent() {
        return content;
    }

    /**
     * 设置内容
     *
     * @param content
     *            内容
     */
    public void setContent(String content) {
        this.content = content;
    }

    @Override
    public String toString() {
        return SpringUtils.getMessage(content);
    }
}
